“测试右移”与DevOps有关系吗?
不能把全部“系统测试”右移,只是部分的; 某些测试更适合线上测试
性能测试:对于非BAT那样的企业,一个新产品上线,并没有太多的用户,一般不会存在性能问题(前提是做过单元的测试测试),在研发环境上做性能测试费钱又费时,可以在上线后进行性能测试——在线性能监控,发现性能瓶颈、内存泄露等问题,实现持续测试、持续调优。
安全性测试:安全性测试水也很深,线下可以完成代码的静态分析、安全性功能验证、渗透测试等,上线后,还是可以通过监控、检测来发现的一些安全性漏洞,及时修正。
易用性测试:侧重A/B测试,见文章:干货分享:如何用A/B测试驱动产品增长?
部分功能测试:有些测试无法在线下做的,特别是和其它系统集成的验证,这也只能在上线后进行,但这类测试不是让用户去测,而是研发人员(部署人员)自己主动验证,即一旦版本部署就立即验证,赶在用户使用之前完成。
验收测试:灰度发布就是一个例子,就是让用户真正来完成对系统的验收,通过导流量,从千分之一流量到百分之几、百分之十的流量,逐步扩大用户的使用范围,如果中间达不到预期质量,立刻回滚到上一个版本。
收集用户反馈,进一步改进产品质量。虽然这不能算测试,也是为了改进质量,甚至更有价值。如微软的客户反馈系统, 再进一步就是利用AI技术来收集用户反馈,进行数据挖掘、客户情绪分析、客户焦点分析等。
这要看我们如何理解DevOps?
说它与DevOps没有关系也可以,只要软件作为一种服务(SaaS)存在,就可以实施“测试右移”实践,即不管DevOps在与不在,我们还是可以开展测试右移的活动。
如果认为DevOps是研发活动延伸到运维,那么可以说“测试右移”和DevOps有直接关系,即在运维环境上完成研发阶段未完成的工作,这也需要研发团队和运维团队的紧密合作,也相当于把“研发”和“运维”之间的那堵墙推倒了。“测试左移+测试右移”可以认为是敏捷研发、DevOps在测试领域的体现。